<?php
/**
 * 商户服务类
 *
 */
class ShanghuService extends Service {
	
	/**
	 * 验证商品券，并返回相应数据。
	 * 具体如何验证，待定。
	 * @param String $passcode
	 */
	public function checkPassCode($passcode,$checkerId){
		Log::record('ShanghuService.checkPassCode('.$passcode.','.$checkerId.')',Log::DEBUG,Log::FILE);
		$coupon = service('Coupon')->getByPasscode($passcode);
		$result['data']['passcode']=$passcode;
		if(!empty($coupon)){
			
			if($coupon['is_canceled']=='Y')return array('status'=>0,'msg'=>K('SP_COUPON_NM').' [券码：'.$passcode.'] 已作废！原因：'.$coupon['cancel_reason'] );
			
			//检查礼券与商户是否对应。即该礼券商品是否为商户下的商品。
			$isbelong = D('Goods','Admin')->isGoodsBelongPartner($coupon['goods_id'],$checkerId);
			
			if(!$isbelong)return array('status'=>0,'msg'=>K('SP_COUPON_NM').' [券码：'.$passcode.'] 对应商品不属于贵店铺！' );
			//判断是否兑换
			if(ifCouponUsed($coupon['checker_id'],$coupon['check_time'])){
				return array('status'=>0,'msg'=>K('SP_COUPON_NM').' [券码：'.$passcode.'] 已使用！<br>使用时间：'.paramMillisecond2Date($coupon['check_time'],'Y年m月d日 H:i') );
			}
			
			//判断是否在有效期
			$nowtime = time();
			if( $coupon['start_date'] > $nowtime ){
				$result['status']='0';
				$result['msg']=K('SP_COUPON_NM').' [券码：'.$passcode.'] 未到开始使用日期！<br>有效期间：['.paramMillisecond2Date($coupon['start_date'],'Y年m月d日').' 至 '. paramMillisecond2Date($coupon['expired_date'],'Y年m月d日').']';
				return $result;
			}
			if( $nowtime > $coupon['expired_date'] ){
				$result['status']='0';
				$result['msg']=K('SP_COUPON_NM').' [券码：'.$passcode.'] 使用截至日期已过，券失效！<br>有效期间：['.paramMillisecond2Date($coupon['start_date'],'Y年m月d日').' 至 '. paramMillisecond2Date($coupon['expired_date'],'Y年m月d日').']';
				return $result;
			}
			
			
			/**判断订单状态**/
			$order = service('Order')->get4SysById($coupon['order_id']);
			if( empty($order) )return array('status'=>0,'msg'=>'订单不存在，'.K('SP_COUPON_NM').' [券码：'.$passcode.'] 不可用！');
			if( $order['pay_state']!='pay' )return  array('status'=>0,'msg'=>'订单未支付，'.K('SP_COUPON_NM').' [券码：'.$passcode.'] 暂时不可用！');
			if( $order['order_state']!='N' )return  array('status'=>0,'msg'=>'订单已撤销，'.K('SP_COUPON_NM').' [券码：'.$passcode.'] 不可用！');
			if( $order['enable']!='Y' )return  array('status'=>0,'msg'=>'订单失效，'.K('SP_COUPON_NM').' [券码：'.$passcode.'] 不可用！');
			
			$product = service('Product')->getByShelfId($order['shelf_id']);
			$extinfo = service('Brand')->getExtInfoByBid($product['partner_id']);
			$result['status']=1;
			$result['msg']=K('SP_COUPON_NM').' [券码：'.$passcode.'] 可以使用！';
			$result['data']['order_id']=$coupon['order_id'];
			$result['data']['quantity']=$coupon['quantity'];
			$result['data']['goods_icon']=getPhotoFromThumb($product['goods_icon'],210,210);
			$result['data']['goods_title']=$product['goods_title'];
			$result['data']['validity_period']=paramMillisecond2Date($coupon['start_date'],'Y年m月d日').' 至 '. paramMillisecond2Date($coupon['expired_date'],'Y年m月d日');
			$result['data']['coupon_state']='未兑换'.($nowtime > $coupon['expired_date']?" | 券失效":" | 券有效");
			$result['data']['brand_title']=$product['partner_title'];
			$result['data']['summary']=$product['goods_summary'];
			$result['data']['other_info']=empty($extinfo['explain'])?'无':$extinfo['explain'];
			
		}else{
			$result['status']=0;
			$result['msg']=K('SP_COUPON_NM').' [券码：'.$passcode.'] 不存在！';
		}
		return $result;
		
	}
	
	
	public function doConfirmCoupon($passcode,$checkerId){
		$result=$this->checkPassCode($passcode,$checkerId);
		
		//如果检查通过，则进行确认
		if($result['status']==1){
			$check_time = service('Coupon')->checkerConfirm($passcode,$checkerId);
			//如果确认失败
			if( empty($check_time) ){
				unset($result);
				$result['status']=0;
				$result['msg']=K('SP_COUPON_NM').' [号码：'.$passcode.'] 确认消费失败！';
				//unset($result['data']);
				return $result;
			}
			$result['data']['coupon_state']='兑换成功！时间：'.paramMillisecond2Date($check_time,'Y年m月d日 H:i').'';
		}
		
		return $result;
	}
	
	//服务初始化
	public function init() {
	}

	//运行服务，系统服务自动运行
	public function run() {
	}
	
	/* 后台管理相关方法 */

	//启动服务，未编码
	public function _start(){
		return true;
	}
	
	//停止服务，未编码
	public function _stop(){
		return true;
	}

	//卸载服务，未编码
	public function _install(){
		return true;
	}

	//卸载服务，未编码
	public function _uninstall(){
		return true;
	}
}
?>